home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
t_os
/
secev10
/
secev10.bas
< prev
next >
Wrap
BASIC Source File
|
1991-10-18
|
20KB
|
520 lines
100 '**********************************
200 '* *
300 '* SuperEscColor_EDT v 1.0 *
400 '* *
500 '* Program By.Yosio.M *
600 '* *
700 '* H03/07/20 *
800 '**********************************
900 '
1000 '
1100 '---------------------------------------------------------------------
1200 CLEAR ,5000,300000
1300 SCREEN@ 2
1400 COLOR 7,0,7,0
1500 CLS:WIDTH 80,25
1600 CONSOLE 21,1,1
1700 '---------------------------------------------------------------------
1800 DEFINT L,X,Y
1900 DIM DOT$(37,60),COL$(37,60),ESC$(50)
2000 COL=7
2100 TOWNS=1'--------------------タウンズ用
2200 AT_COL=0'-------------------アトリビュート(ノーマル)
2300 展開文字$="★"
2400 マウス$="★"
2500 マウス_IN$="★☆■□●○◎▽△▼▲◇◆【】≪≫/\⊂⊃※†‡⌒〓⇔§∫∬♯♭♪∞"
2600 マウス_PU$=マウス_IN$
2700 展開保持$=マウス_IN$
2800 ページ=0
2900 単_連=0
3000 回転=0
3100 '---------------------------------------------------------------------
3200 'ノーマル
3300 ESC$(0)=CHR$(27)+"[m"
3400 ESC$(1)=CHR$(27)+"[34m":ESC$(2)=CHR$(27)+"[31m":ESC$(3)=CHR$(27)+"[35m"
3500 ESC$(4)=CHR$(27)+"[32m":ESC$(5)=CHR$(27)+"[36m":ESC$(6)=CHR$(27)+"[33m"
3600 ESC$(7)=CHR$(27)+"[37m"
3700 '----------------------------------------------------------------------
3800 'ブリンク
3900 ESC$(40)=CHR$(27)+"[m"
4000 ESC$(41)=CHR$(27)+"[5;34m":ESC$(42)=CHR$(27)+"[5;31m":ESC$(43)=CHR$(27)+"[5;35m"
4100 ESC$(44)=CHR$(27)+"[5;32m":ESC$(45)=CHR$(27)+"[5;36m":ESC$(46)=CHR$(27)+"[5;33m"
4200 ESC$(47)=CHR$(27)+"[5;37m":ESC$(50)=CHR$(27)+"[m"
4300 '---------------------------------------------------------------------
4400 'リバース
4500 ESC$(10)=CHR$(27)+"[m"
4600 ESC$(11)=CHR$(27)+"[7;34m":ESC$(12)=CHR$(27)+"[7;31m":ESC$(13)=CHR$(27)+"[7;35m"
4700 ESC$(14)=CHR$(27)+"[7;32m":ESC$(15)=CHR$(27)+"[7;36m":ESC$(16)=CHR$(27)+"[7;33m"
4800 ESC$(17)=CHR$(27)+"[7;37m"
4900 '---------------------------------------------------------------------
5000 KEY 1,"展開字"
5100 KEY 2,"マウス"
5200 KEY 3," 単頁 "
5300 KEY 4," 前頁 "
5400 KEY 5," 次頁 "
5500 KEY 6,"ノーマル "
5600 KEY 7,"画面消"
5700 KEY 8,"画面塗"
5800 KEY 9,"ロード"
5900 KEY 10,"セーブ"
6000 '---------------------------------------------------------------------
6100 ON MOUSE(1) GOSUB *マウスXY
6200 ON MOUSE(2) GOSUB *マウス左
6300 ON MOUSE(4) GOSUB *マウス右
6400 ON ERROR GOTO *エラー
6500 GOSUB *初期画面
6600 GOSUB *マウス文字表示
6700 GOSUB *マウス初期化
6800 GOSUB *マウスXY
6900 '---------------------------------------------------------------------
7000 *LOOP'----- 一応ここでプログラムをループする。
7100 '
7200 GOTO *LOOP
7300 '---------------------------------------------------------------------
7400 *初期画面
7500 COLOR 7,,,4
7600 LOCATE 2,0:PRINT "□";
7700 COLOR ,,,0
7800 FOR I=1 TO 7
7900 COLOR I
8000 LOCATE I*2+2,0
8100 PRINT "■"
8200 NEXT I
8300 COLOR ,,,4
8400 LOCATE 20,0:IF 展開文字セット=1 THEN COLOR 2,,,1:PRINT "展開文字"; ELSE PRINT "展開文字";
8500 LOCATE 28,0:PRINT "〔"+展開文字$+"〕"
8600 LOCATE 30,0:PRINT 展開文字$
8700 LOCATE 36,0:PRINT "マウス〔";:COLOR ,,,0:PRINT マウス$;:COLOR ,,,4:PRINT "〕";:COLOR ,,,0:PRINT "■";:COLOR 7,,,4
8800 LOCATE 54,0:PRINT "X=";LPX;
8900 LOCATE 61,0:PRINT "Y=";LPY;
9000 LOCATE 69,0:PRINT "ページ"+STR$(ページ+1);
9100 FOR LX=1 TO 38
9200 II=LX+100
9300 IF LX MOD 5 THEN SYMBOL(LX*16+3,23),".",1,1,6 ELSE SYMBOL(LX*16-1,22),RIGHT$(STR$(II),2),1,1,6
9400 NEXT LX
9500 FOR LY=1 TO 20
9600 II=LY+100
9700 IF LY MOD 5 THEN SYMBOL(8,LY*19+15),".",1,1,6 ELSE SYMBOL(0,LY*19+19),RIGHT$(STR$(II),2),1,1,6
9800 NEXT LY
9900 RETURN
10000 '---------------------------------------------------------------------
10100 *マウス初期化
10200 MOUSE 0
10300 MOUSE 1,30,50,1
10400 MOUSE 4,16,0,621,479
10500 MOUSE (1) ON
10600 MOUSE (2) ON
10700 MOUSE (4) ON
10800 RETURN
10900 '---------------------------------------------------------------------
11000 *マウスXY
11100 IF MOUSE(1)<416 THEN MOUSE 4,16,0,621,479 ELSE MOUSE 4,0,16,621,479
11200 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
11300 IF LPY<2 OR LPY>21 THEN RETURN
11400 COLOR 7,,,4
11500 LOCATE 57,0:PRINT LPX;
11600 LOCATE 64,0:PRINT LPY-1;
11700 LOX=LPX-1
11800 LOY=LPY-2
11900 RETURN
12000 '---------------------------------------------------------------------
12100 *マウス左
12200 MOUSE(1) OFF
12300 IF LPY<2 THEN GOSUB *マウス上:MOUSE(1) ON:RETURN
12400 IF LPY>21 OR MOUSE(1)>462 THEN GOSUB *マウス下:MOUSE(1) ON:RETURN
12500 IF 展開文字セット=1 THEN GOSUB *パターン:MOUSE(1) ON:RETURN
12600 GOSUB *サウンド1
12700 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF
12800 WHILE MOUSE(2,0)=-1
12900 IF MOUSE(2,1)=-1 THEN GOSUB *マウスPUT
13000 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
13100 IF LPY<2 OR LPY>21 THEN 14400
13200 COLOR 7,,,4
13300 LOCATE 57,0:PRINT LPX;
13400 LOCATE 64,0:PRINT LPY;
13500 COLOR COL,,,AT_COL
13600 LOCATE LPX*2,LPY
13700 PRINT マウス$;
13800 LOX=LPX-1
13900 LOY=LPY-2
14000 IF COL=0 THEN DOT$(LOX,LOY+ページ*20)=" " ELSE DOT$(LOX,LOY+ページ*20)=マウス$
14100 COL$(LOX,LOY+ページ*20)=STR$(AT_COL)+STR$(COL)
14200 WEND
14300 COLOR 7,,,4
14400 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON
14500 RETURN
14600 '---------------------------------------------------------------------
14700 *マウス右
14800 IF LPY<2 THEN RETURN
14900 GOSUB *サウンド1
15000 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF
15100 WHILE MOUSE(2,1)=-1
15200 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
15300 IF LPY<2 OR LPY>21 THEN 16400
15400 COLOR 7,,,4
15500 LOCATE 57,0:PRINT LPX;
15600 LOCATE 64,0:PRINT LPY;
15700 LOCATE LPX*2,LPY
15800 PRINT " ";
15900 LOX=LPX-1
16000 LOY=LPY-2
16100 DOT$(LOX,LOY+ページ*20)=""
16200 COL$(LOX,LOY+ページ*20)=""
16300 WEND
16400 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON
16500 RETURN
16600 '---------------------------------------------------------------------
16700 *マウスPUT
16800 MOS_P=1:K_LEN=LEN(マウス_IN$)
16900 FOR X=LPX TO LPX+K_LEN/2-1
17000 IF X>38 THEN RETURN
17100 MOS$=MID$(マウス_IN$,MOS_P,1)+MID$(マウス_IN$,MOS_P+1,1)
17200 DOT$(X-1,(LPY-2)+ページ*20)=MOS$
17300 COL$(X-1,(LPY-2)+ページ*20)=STR$(AT_COL)+STR$(COL)
17400 LOCATE X*2,LPY
17500 COLOR COL,,,AT_COL
17600 PRINT MOS$;
17700 MOS_P=MOS_P+2
17800 GOSUB *サウンド1
17900 NEXT X
18000 RETURN
18100 '---------------------------------------------------------------------
18200 *パターン
18300 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
18400 LPX=(MOUSE(0)-7)/16:LPY=(MOUSE(1)-7)/19
18500 IF LPY<2 OR LPY>21 THEN RETURN
18600 LOX=LPX-1
18700 LOY=LPY-2
18800 POX=0:POY=0
18900 FOR Y=LOY TO LOY+15:POX=0
19000 FOR X=LOX TO LOX+15
19100 P=POINT(POX+240,POY)
19200 COLOR COL,,,AT_COL
19300 IF P AND X<38 AND Y<20 THEN LOCATE X*2+2,Y+2:PRINT マウス$;
19400 IF P AND X<38 AND 単_連=1 AND ページ<2 THEN DOT$(X,Y+ページ*20)=マウス$:COL$(X,Y+ページ*20)=STR$(AT_COL)+STR$(COL)
19500 IF P AND X<38 AND Y<20 AND (単_連=0 OR ページ=2) THEN DOT$(X,Y+ページ*20)=マウス$:COL$(X,Y+ページ*20)=STR$(AT_COL)+STR$(COL)
19600 POX=POX+1
19700 NEXT X
19800 POY=POY+1
19900 NEXT Y
20000 展開文字セット=0
20100 COLOR 7,0,7,4:LOCATE 20,0:PRINT "展開文字";
20200 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
20300 RETURN
20400 '---------------------------------------------------------------------
20500 *マウス上
20600 COLOR ,,,0
20700 IF (LPX<1 OR LPX>8)=0 AND LPY=0 THEN COL=LPX-1:GOSUB *サウンド1:LOCATE 48,0:IF COL=0 THEN COLOR 7:PRINT "□"; ELSE COLOR COL:PRINT "■";
20800 COLOR COL,,,AT_COL
20900 LOCATE 44,0
21000 PRINT マウス$;
21100 IF (LPX<10 OR LPX>13)=0 THEN GOSUB *展開文字セット
21200 IF LPX=15 THEN GOSUB *回転
21300 RETURN
21400 '---------------------------------------------------------------------
21500 *マウス下
21600 IF LPY=22 AND LPX>3 THEN GOSUB *選出:RETURN
21700 IF LPY=23 THEN RETURN
21800 IF MOUSE(1)<462 THEN RETURN
21900 PF_SET=MOUSE(0)/56
22000 IF PF_SET>10 THEN RETURN
22100 PF_SET=INT(PF_SET)+1
22200 GOSUB *サウンド1
22300 ON PF_SET GOSUB *展開文字,*マウス,*連_単,*前頁,*次頁,*リバース,*画面消去,*画面塗りつぶし,*ロード,*セーブ
22400 RETURN
22500 '---------------------------------------------------------------------
22600 *サウンド1
22700 PLAY "L200O7F"
22800 RETURN
22900 '---------------------------------------------------------------------
23000 *選出
23100 IF マウス記憶=1 THEN K_LEN=LEN(マウス保持$)/2
23200 IF 展開記憶=1 THEN K_LEN=LEN(展開保持$)/2
23300 IF マウス記憶=1 AND K_LEN<LPX-4 THEN RETURN
23400 IF 展開記憶=1 AND K_LEN<LPX-4 THEN RETURN
23500 IF マウス記憶=1 AND K_LEN<LPX-3 THEN マウス_IN$=マウス_PU$:LOCATE 0,22:GOSUB 29300:RETURN
23600 IF 展開記憶=1 AND K_LEN<LPX-3 THEN 展開文字_IN$=マウス_PU$:LOCATE 0,22:GOSUB 25000:RETURN
23700 GOSUB *サウンド1
23800 選出1=SCREEN(LPX*2,22):選出2=SCREEN(LPX*2+1,22)
23900 IF マウス記憶=1 THEN マウス$=CHR$(選出1)+CHR$(選出2) :COLOR COL,,,AT_COL:LOCATE 44,0:PRINT マウス$;
24000 IF 展開記憶=1 THEN 展開文字$=CHR$(選出1)+CHR$(選出2):COLOR 7,,,4:LOCATE 30,0:PRINT 展開文字$;
24100 RETURN
24200 '---------------------------------------------------------------------
24300 *展開文字
24400 LOCATE 0,22:PRINT SPACE$(80);
24500 LOCATE 0,22
24600 COLOR 7,,,4
24700 LINE INPUT"展開文字を入力してください。";展開文字_IN$
24800 IF 展開文字_IN$="" THEN 展開文字_IN$=展開保持$
24900 IF LEN(展開文字_IN$) MOD 2 THEN 展開文字_IN$=展開文字_IN$+" "
25000 展開文字$=LEFT$(展開文字_IN$,2):展開文字_IN$=MID$(展開文字_IN$,1,68)
25100 LOCATE 30,0
25200 PRINT 展開文字$;
25300 *展開文字表示
25400 LOCATE 0,22:PRINT SPACE$(80);
25500 LOCATE 0,22:COLOR 4,,,1:PRINT "展開文字";:COLOR 7,,,4:PRINT 展開文字_IN$;:COLOR 2,,,1:PRINT "?";:COLOR 7,,,4
25600 展開記憶=1
25700 マウス記憶=0
25800 回転=0
25900 展開保持$=展開文字_IN$
26000 RETURN
26100 '---------------------------------------------------------------------
26200 *展開文字セット
26300 GOSUB *サウンド1
26400 IF 展開文字$="" THEN RETURN
26500 IF 展開文字セット=0 THEN 展開文字セット=1 ELSE 展開文字セット=0
26600 IF 展開文字セット=1 THEN COLOR 2,,,1:LOCATE 20,0:PRINT "展開文字"; ELSE COLOR 7,,,4:LOCATE 20,0:PRINT "展開文字";
26700 COLOR 7,,,4:LOCATE 30,0:PRINT " ";
26800 回転=0
26900 GOSUB 28000
27000 RETURN
27100 '---------------------------------------------------------------------
27200 *回転:COLOR 7,,,4
27300 IF 展開文字$="" OR 展開文字$=" " OR 展開文字セット=0 THEN RETURN
27400 GOSUB *サウンド1
27500 COLOR 7,,,4:LOCATE 30,0:PRINT " ";
27600 IF 回転=0 THEN 回転=1:GOTO 28000
27700 IF 回転=1 THEN 回転=2:GOTO 28000
27800 IF 回転=2 THEN 回転=3:GOTO 28000
27900 IF 回転=3 THEN 回転=0
28000 IF 回転=1 THEN SYMBOL(240,15),展開文字$,1,1,7,1
28100 IF 回転=2 THEN SYMBOL(255,15),展開文字$,1,1,7,2
28200 IF 回転=3 THEN SYMBOL(255,0),展開文字$,1,1,7,3
28300 IF 回転=0 THEN SYMBOL(240,0),展開文字$,1,1,7,0
28400 RETURN
28500 '---------------------------------------------------------------------
28600 *マウス
28700 LOCATE 0,22:PRINT SPACE$(80);
28800 LOCATE 0,22
28900 COLOR 7,,,4
29000 LINE INPUT"マウスの文字を入力してください。";マウス_IN$
29100 IF LEN(マウス_IN$) MOD 2 THEN マウス_IN$=マウス_IN$+" "
29200 IF マウス_IN$="" THEN マウス_IN$=マウス保持$
29300 マウス$=LEFT$(マウス_IN$,2):マウス_IN$=MID$(マウス_IN$,1,68)
29400 COLOR COL,,,AT_COL
29500 LOCATE 44,0
29600 PRINT マウス$;
29700 *マウス文字表示
29800 COLOR 7,,,4
29900 LOCATE 0,22:PRINT SPACE$(80);
30000 LOCATE 0,22:COLOR 6,,,1:PRINT "マウス ";:COLOR 7,,,4:PRINT マウス_IN$;:COLOR 2,,,1:PRINT "?";:COLOR 7,,,4
30100 展開記憶=0
30200 マウス記憶=1
30300 マウス保持$=マウス_IN$
30400 COLOR 7,,,4
30500 RETURN
30600 '---------------------------------------------------------------------
30700 *連_単
30800 IF 単_連=0 THEN 単_連=1 ELSE 単_連=0
30900 IF 単_連=0 THEN KEY 3," 単頁 "
31000 IF 単_連=1 THEN KEY 3," 連頁 "
31100 RETURN
31200 '---------------------------------------------------------------------
31300 *前頁
31400 IF ページ<1 THEN RETURN
31500 ページ=ページ-1
31600 GOSUB *頁サブ
31700 RETURN
31800 '---------------------------------------------------------------------
31900 *次頁
32000 IF ページ>1 THEN RETURN
32100 ページ=ページ+1
32200 GOSUB *頁サブ
32300 RETURN
32400 '---------------------------------------------------------------------
32500 *頁サブ
32600 COL1=COL:AT_COL1=AT_COL
32700 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
32800 FOR LY=0 TO 19
32900 FOR LX=0 TO 37
33000 COL=VAL(MID$(COL$(LX,LY+ページ*20),4,1))
33100 COLOR 7,0,7,0
33200 IF COL=0 THEN LOCATE LX*2+2,LY+2:PRINT " ";:NEXT LX:GOTO 33800
33300 AT_COL=VAL(MID$(COL$(LX,LY+ページ*20),2,1))
33400 LOCATE LX*2+2,LY+2
33500 COLOR COL,,,AT_COL
33600 PRINT DOT$(LX,LY+ページ*20);
33700 NEXT LX
33800 NEXT LY
33900 COL=COL1:AT_COL=AT_COL1
34000 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
34100 COLOR 7,,,4
34200 LOCATE 69,0:PRINT "ページ"+STR$(ページ+1);
34300 RETURN
34400 '---------------------------------------------------------------------
34500 *リバース
34600 IF AT_COL=0 THEN AT_COL=1:KEY 6,"リバース":GOTO 34900
34700 IF AT_COL=1 THEN AT_COL=2:KEY 6,"ブリンク":IF TOWNS=1 THEN AT_COL=4:GOTO 34900 ELSE GOTO 34900
34800 IF AT_COL=2 OR AT_COL=4 THEN AT_COL=0:KEY 6,"ノーマル"
34900 COLOR COL,,,AT_COL
35000 IF 展開記憶=1 THEN K_LEN=LEN(展開保持$)/2
35100 LOCATE 44,0
35200 PRINT マウス$;
35300 COLOR 7,,,4
35400 RETURN
35500 '
35600 '---------------------------------------------------------------------
35700 *画面消去
35800 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
35900 YY=2
36000 COLOR 7,0,7,0
36100 FOR Y=ページ*20 TO ページ*20+19
36200 FOR X=0 TO 37
36300 DOT$(X,Y)=""
36400 COL$(X,Y)=""
36500 LOCATE X*2+2,YY
36600 PRINT " ";
36700 NEXT X
36800 YY=YY+1
36900 NEXT Y
37000 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
37100 RETURN
37200 '---------------------------------------------------------------------
37300 *画面塗りつぶし
37400 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
37500 COLOR COL,,,AT_COL
37600 YY=2
37700 FOR Y=ページ*20 TO ページ*20+19
37800 FOR X=0 TO 37
37900 DOT$(X,Y)=マウス$
38000 COL$(X,Y)=STR$(AT_COL)+STR$(COL)
38100 LOCATE X*2+2,YY
38200 PRINT マウス$;
38300 NEXT X
38400 YY=YY+1
38500 NEXT Y
38600 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
38700 RETURN
38800 '---------------------------------------------------------------------
38900 *ロード
39000 LOCATE 0,22:PRINT SPACE$(80);
39100 LINE(0,418)-(639,462),PRESET,0,BF
39200 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
39300 COL1=COL:AT_COL1=AT_COL
39400 COLOR 7,,,4
39500 LOCATE 0,22
39600 LINE INPUT"ロードファイル名 ?";FIL$
39700 IF FIL$="" THEN 42400
39800 FIL$=LEFT$(FIL$,8)+".ESL"
39900 LOCATE 0,22:PRINT SPACE$(80);
40000 LOCATE 0,22
40100 LOCATE 0,22:PRINT "ファイル名 "+FIL$+" をロード中。"
40200 OPEN "I",#1,FIL$
40300 LINE INPUT #1,FIL_CH$
40400 IF FIL_CH$<>"SECEV10" THEN CLOSE #1:GOTO *ファイルエラー
40500 ERASE DOT$,COL$:DIM DOT$(37,60),COL$(37,60)
40600 LINE INPUT #1,PE$
40700 PE=VAL(PE$)
40800 FOR Y=0 TO PE*20-1
40900 IF (ESC2$=ESC$) AND ESC<8 THEN ESC$=""
41000 FOR X=0 TO 37
41100 LINE INPUT #1,ESL$
41200 COL$(X,Y)=MID$(ESL$,1,2)+MID$(ESL$,3,2)
41300 COL=VAL(MID$(ESL$,4,1))
41400 AT_COL=VAL(MID$(ESL$,2,1))
41500 COLOR COL,,,AT_COL
41600 ESC2$=ESC1$
41700 LINE INPUT #1,ESL$
41800 DOT$(X,Y)=ESL$
41900 LOCATE X*2+2,Y+2
42000 IF Y<20 THEN IF ESL$="" THEN PRINT " "; ELSE PRINT ESL$;
42100 NEXT X
42200 NEXT Y
42300 CLOSE #1
42400 COLOR 7,,,4
42500 ページ=0
42600 LOCATE 69,0:PRINT "ページ"+STR$(ページ+1);
42700 LINE(0,418)-(639,462),PRESET,0,BF
42800 COL=COL1:AT_COL=AT_COL1
42900 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
43000 FOR T=0 TO 3:BEEP 1:WAIT 3:BEEP 0:WAIT 3:NEXT T
43100 GOSUB *マウス文字表示
43200 RETURN
43300 '---------------------------------------------------------------------
43400 *セーブ
43500 追加=0
43600 LOCATE 0,22:PRINT SPACE$(80);
43700 LINE(0,418)-(639,462),PRESET,0,BF
43800 MOUSE(1) OFF:MOUSE(2) OFF:MOUSE(4) OFF:MOUSE 1,,,0
43900 COLOR 7,,,4
44000 LOCATE 0,22
44100 LINE INPUT"セーブファイル名 ?";FIL1$
44200 IF FIL1$="" THEN 48100
44300 LOCATE 0,22
44400 LINE INPUT"セーブページ枚数 ?(1<->3)";PE$
44500 IF PE$="" THEN 48100
44600 PE=VAL(PE$)
44700 IF PE<1 OR PE>3 THEN BEEP:GOTO 44300
44800 FIL$=LEFT$(FIL1$,8)+".ESC"
44900 IF 追加=0 THEN OPEN "O",#1,FIL$:PRINT #1,CHR$(27)+"[1v"+CHR$(27)+"[2J"
45000 IF 追加=1 THEN OPEN "A",#1,FIL$
45100 LOCATE 0,22:PRINT SPACE$(80);
45200 LOCATE 0,22:PRINT "ファイル名 "+FIL$+" でセーブ中。"
45300 FOR Y=0 TO PE*20-1
45400 ESC_CH=0:SAV$=" "
45500 FOR X=0 TO 37
45600 IF DOT$(X,Y)="" THEN DOT$(X,Y)=" "
45700 ESC=VAL(COL$(X,Y))
45800 '------------------------フィールドが短くて苦労したぜぇ!
45900 IF ESC=ESC_CH THEN SAV$=SAV$+DOT$(X,Y)
46000 IF ESC<>ESC_CH THEN IF (ESC<7 AND ESC_CH>10) THEN SAV$=SAV$+ESC$(50)+ESC$(ESC)+DOT$(X,Y) ELSE SAV$=SAV$+ESC$(ESC)+DOT$(X,Y)
46100 '------------------------やっと出来たぜぇ!
46200 ESC_CH=ESC
46300 IF LEN(SAV$)>200 THEN PRINT #1,SAV$;:SAV$=""
46400 NEXT X
46500 IF Y=PE*20-1 THEN PRINT #1,SAV$+CHR$(27)+"[0v"+ESC$(50) ELSE PRINT #1,SAV$+ESC$(50)
46600 NEXT Y
46700 CLOSE #1
46800 '-----------------------------------なんとか動いたぞっ!と。
46900 FIL$=LEFT$(FIL1$,8)+".ESL"
47000 IF 追加=0 THEN OPEN "O",#1,FIL$
47100 IF 追加=1 THEN 48100
47200 PRINT #1,"SECEV10"
47300 PRINT #1,PE$
47400 FOR Y=0 TO PE*20
47500 FOR X=0 TO 37
47600 PRINT #1,COL$(X,Y)
47700 PRINT #1,DOT$(X,Y)
47800 NEXT X
47900 NEXT Y
48000 CLOSE #1
48100 LINE(0,418)-(639,462),PRESET,0,BF
48200 MOUSE(1) ON:MOUSE(2) ON:MOUSE(4) ON:MOUSE 1,,,1
48300 FOR T=0 TO 3:BEEP 1:WAIT 3:BEEP 0:WAIT 3:NEXT T
48400 GOSUB *マウス文字表示
48500 RETURN
48600 '---------------------------------------------------------------------
48700 *エラー
48800 BEEP:ER_R$=""
48900 LOCATE 0,22
49000 ER_R$=STR$(ERL)+"行にNo."+STR$(ERR)+"のエラーが発生しました"
49100 IF ERR=53 THEN ER_R$="入出力装置に異常が発生しました"
49200 IF ERR=60 OR ERR=72 THEN ER_R$="指定の入出力装置は使用できません"
49300 IF ERR=63 THEN PRINT"指定のファイル(ディレクトリ)は見つかりません":ER_R$="又は指定のドライブ番号が違います"
49400 IF ERR=64 THEN CLOSE #1:RESUME *更新
49500 IF ERR=65 OR ERR=67 THEN ER_R$="ディスクに空き領域がありません"
49600 IF ERR=73 THEN ER_R$="指定されたディスクは書き込みが禁止されています"
49700 PRINT ER_R$+" マウスの左を押してください。";
49800 WHILE MOUSE(2,0)=0
49900 WEND
50000 LINE(0,418)-(639,462),PRESET,0,BF
50100 RESUME 6600
50200 '---------------------------------------------------------------------
50300 *更新
50400 LOCATE 0,22
50500 PRINT "指定のファイルは既に存在しています。更新=マウス左 追加=マウス右"
50600 IF MOUSE(2,0)=-1 THEN KILL LEFT$(FIL1$,8)+".ESC":KILL LEFT$(FIL1$,8)+".ESL":GOTO 44900
50700 IF MOUSE(2,1)=-1 THEN 追加=1:GOTO 45000
50800 GOTO 50600
50900 '---------------------------------------------------------------------
51000 *ファイルエラー
51100 BEEP
51200 LOCATE 0,22
51300 PRINT SPACE$(80);
51400 LOCATE 0,22
51500 PRINT "只今のロードファイル"+FIL$+"は,現システムではロード不可能なファイルです。"
51600 PRINT "マウスの右を押してください。";
51700 WHILE MOUSE(2,1)=0
51800 WEND
51900 GOTO 42400